package cn.yilongquan.mapper;

import cn.yilongquan.user.domain.Role;
import cn.yilongquan.user.query.RoleQuery;
import io.lettuce.core.dynamic.annotation.Param;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface RoleMapper {
    // 添加
    void add(Role role);

    // 根据ID删除
    void deleteById(Long id);

    // 批量删除
    void batchDelete(List<Long> ids);

    // 修改
    void update(Role role);

    // 根据ID查询
    Role findById(Long id);

    // 查询所有
    List<Role> findAll();

    // 分页查询
    List<Role> pageList(RoleQuery roleQuery);

    // 查询总数
    Long count(RoleQuery roleQuery);

    //根据角色编码查询
    Role findBySn(String sn);

    //在role_menu表中查询role_id的数量
    Long countroleandmenuByroleID(@Param("roleId") Long roleId);
    //在role_permission表中查询role_id的数量
    Long countroleandpermissionByroleID(@Param("roleId") Long roleId);

    int countBySnAndNotId(@Param("code") String code, @Param("excludeId") Long excludeId);

    List<Long> getPermissionIdsByRoleId(Long roleId);

    List<Long> getMenuIdsByRoleId(Long roleId);

}
